#!/bin/bash
#Variaveis do programa
tempfile=`tempfile 2>/dev/null` || tempfile=fifo/test$$
trap "rm -f $tempfile" 0 1 2 5 15
DATABASE=$(cat conf/database)			#contem o caminho para a base de dados
export MYSQL_TABLE=alvarion_su			#nome da tabela, na base de dados, em que armazenaremos os valores
FIFO="fifo/tmp-mysql-SU-$$"			#FIFO que estaremos utilizando

#hello world
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Script para obtencao de dados de um Alvarion SU (AU-X-YD)" 0 0

#verifica se temos um argumento (um ip)
#note que somente verificamos se o temos, nao se ele é valido!!
ARGV="$@"
if [ "x$ARGV" = "x" ] ; then 
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--msgbox "  ERRO! Endereco de IP invalido, ou nenhum endereco ip fornecido!" 0 0
    exit 0;
fi

#prepara o script para interceptar os comandos de interrupcao
trap "x=1" SIGINT
x=0

#mostra quem estamos testando...
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Obtendo valores da estação $ARGV" 0 0

#cria um fifo para poder utilizar a base de dados em modo "persistente"
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Criando FIFO para acesso a base de dados" 0 0
mkfifo $FIFO

#abre a conexao propriamente dita com a base de dados
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Criando conexao com a base de dados ($DATABASE), usando tabela ($MYSQL_TABLE)" 0 0
cat <> $FIFO | mysql -h $DATABASE -u @ testes_alvarion &
sleep 5

#obtendo endereco MAC da SU em que estamos conectados...
export SUMAC=$(snmpget -Ovq -v 1 -c public $ARGV .1.3.6.1.4.1.12394.1.1.1.8.0 | cut -b 2-3,5-6,8-9,11-12,14-15,17-18)

#executa a medicao propriamente dita
echo "Medicao iniciada... Estação: $SUMAC ($ARGV)"

while [ ${x} -eq 0 ]
do
	#pega a timestamp.. meio desnecessario, mas utilizamos no display
	timestamp=$(date +%Y%m%d%H%M%S)
	#pega TODOS os outros dados numa query soh, e os interpreta com o AWK
	#nota: NAO utilize comentarios (#) nessas linhas!!!
	snmpget -Ovq -v 1 -c public $ARGV \
	.1.3.6.1.4.1.12394.1.1.11.2.2.1.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.2.2.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.1.4.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.2.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.3.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.4.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.3.6.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.3.7.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.3.8.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.3.9.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.4.1.1.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.4.1.3.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.4.1.4.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.4.1.5.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.4.2.2.0 \
        .1.3.6.1.4.1.12394.1.1.11.2.4.2.3.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.4.2.5.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.3.1 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.3.2 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.3.3 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.3.4 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.3.5 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.3.6 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.3.7 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.3.8 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.4.1 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.4.2 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.4.3 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.4.4 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.4.5 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.4.6 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.4.7 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.2.1.4.8 \
	.1.3.6.1.4.1.12394.1.1.11.2.5.3.0 \
	.1.3.6.1.4.1.12394.1.1.11.1.0 \
	.1.3.6.1.4.1.12394.1.1.10.7.0 \
	| bin/wrapper_snmpget.awk 2>/dev/null >> $FIFO

	echo $timestamp, $ARGV, $SUMAC
	usleep 900000
done

#matando o processo do CAT original...
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Finalizando conexao com a base de dados" 0 0
kill -9 `ps | grep cat | cut -b 1-5`

#remove o fifo que criamos inicialmente
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Removendo FIFO" 0 0
rm -rf $FIFO

#that's all, folks!
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Script finalizado com sucesso!"
exit 0